package com.zy.facepp.rest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.zy.facepp.bean.OcrCardParams;
import com.zy.facepp.service.FacePlusPlusCardService;

import io.swagger.annotations.ApiOperation;

/**
 * Face++ Card Controller
 *
 * @author zhanghengchang
 * @date 2018/3/8
 */
@RestController
public class FacePlusPlusCardController {

    private static final Logger logger = LoggerFactory.getLogger(FacePlusPlusCardController.class);

    @Autowired
    private FacePlusPlusCardService facePlusPlusService;

    /**
     * 身份证检测
     *
     * @param params requestId 请求ID UUID <br/>
     *        imageUrl 身份证图片的网络地址，和image_file，image_base64三选一上传 <br/>
     *        imageFile 本地身份证图片的二进制数据，和image_url，image_base64三选一上传 <br/>
     *        imageBase64 身份证图片的base64格式数据，和image_file，image_url三选一上传 <br/>
     *        legality 返回身份证照片合法性检查结果，值只取“0”或“1”。“1”：返回； “0”：不返回
     * @return 身份证识别结果
     */
    @ApiOperation(value = "身份证识别", notes = "{requestId, imageUrl}")
    @PostMapping(value = "/ocridcard")
    public JSONObject ocrIdCard(@RequestBody OcrCardParams params) {
        return facePlusPlusService.ocrIdCard(params);
    }

    /**
     * 机动车驾驶证检测
     *
     * @param params requestId 请求ID UUID <br/>
     *        imageUrl 驾驶证图片的网络地址，和fileByte，image_base64三选一上传 <br/>
     *        imageFile 本地驾驶证图片的二进制数据，和imageUrl，image_base64三选一上传 <br/>
     *        imageBase64 驾驶证图片的base64格式数据，和fileByte，imageUrl三选一上传 <br/>
     *        legality 返回驾驶证照片合法性检查结果，值只取“0”或“1”。“1”：返回； “0”：不返回
     * @return 机动车驾驶证识别结果
     */
    @ApiOperation(value = "驾驶证识别", notes = "{requestId, imageUrl}")
    @PostMapping(value = "/ocrdriverlicense")
    public JSONObject ocrDriverLicense(@RequestBody OcrCardParams params) {
        return facePlusPlusService.ocrDriverLicense(params);
    }

    /**
     * 机动车行驶证检测
     *
     * @param params requestId 请求ID UUID <br/>
     *        imageUrl 行驶证图片的网络地址，和fileByte，image_base64三选一上传 <br/>
     *        imageFile 本地行驶证图片的二进制数据，和imageUrl，image_base64三选一上传 <br/>
     *        imageBase64 行驶证图片的base64格式数据，和fileByte，imageUrl三选一上传 <br/>
     *        legality 返回行驶证照片合法性检查结果，值只取“0”或“1”。“1”：返回； “0”：不返回
     * @return 机动车行驶证识别结果
     */
    @ApiOperation(value = "行驶证识别", notes = "{requestId, imageUrl}")
    @PostMapping(value = "/ocrvehiclelicense")
    public JSONObject ocrVehicleLicense(@RequestBody OcrCardParams params) {
        return facePlusPlusService.ocrVehicleLicense(params);
    }

    /**
     * 银行卡检测
     *
     * @param params requestId 请求ID UUID <br/>
     *        imageUrl 银行卡图片的网络地址，和fileByte，image_base64三选一上传 <br/>
     *        imageFile 本地银行卡图片的二进制数据，和imageUrl，image_base64三选一上传 <br/>
     *        imageBase64 银行卡图片的base64格式数据，和fileByte，imageUrl三选一上传 <br/>
     *        legality 返回银行卡照片合法性检查结果，值只取“0”或“1”。“1”：返回； “0”：不返回
     * @return 银行卡证识别结果
     */
    @ApiOperation(value = "银行卡识别", notes = "{requestId, imageUrl}")
    @PostMapping(value = "/ocrbankcard")
    public JSONObject ocrBankCard(@RequestBody OcrCardParams params) {
        return facePlusPlusService.ocrBankCard(params);
    }
}
